package com.example.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.RandomStringUtils;

/**
 * 工具类，提供字符串相关操作。
 */
public class StringTools {

    /**
     * 使用MD5算法对字符串进行加密。
     *
     * @param originString 原始字符串
     * @return 加密后的字符串，如果原始字符串为空则返回null
     */
    public static String encodeByMD5(String originString) {
        return StringTools.isEmpty(originString) ? null : DigestUtils.md5Hex(originString);
    }

    /**
     * 检查字符串是否为空。
     * 空的定义包括：null、空字符串、"null"字符串、只包含空白符的字符串。
     *
     * @param str 待检查的字符串
     * @return 如果字符串为空，返回true；否则返回false
     */
    public static boolean isEmpty(String str) {
        if (null == str || "".equals(str) || "null".equals(str) || "\u0000".equals(str)) {
            return true;
        } else if ("".equals(str.trim())) {
            return true;
        }
        return false;
    }

    /**
     * 获取文件的后缀名。
     * 例如：对于文件名"example.txt"，返回".txt"。
     *
     * @param fileName 文件名
     * @return 文件的后缀名
     */
    public static String getFileSuffix(String fileName) {
        String suffix = fileName.substring(fileName.lastIndexOf("."));
        return suffix;
    }

    /**
     * 获取不带后缀的文件名。
     * 例如：对于文件名"example.txt"，返回"example"。
     *
     * @param fileName 文件名
     * @return 不带后缀的文件名
     */
    public static final String getFileName(String fileName) {
        fileName = fileName.substring(0, fileName.lastIndexOf("."));
        return fileName;
    }

    /**
     * 生成指定长度的随机字符串，包含字母和数字。
     *
     * @param count 字符串的长度
     * @return 随机生成的字符串
     */
    public static final String getRandomString(Integer count) {
        return RandomStringUtils.random(count, true, true);
    }

    /**
     * 生成指定长度的随机数字字符串。
     *
     * @param count 字符串的长度
     * @return 随机生成的数字字符串
     */
    public static final String getRandomNumber(Integer count) {
        return RandomStringUtils.random(count, false, true);
    }

    /**
     * 程序的主入口，用于测试工具类的功能。
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        System.out.println(getFileName("xxx.jpg")); // 输出：xxx
        System.out.println(getRandomNumber(5));
    }
}